package com.frinder.robot.handler.task;

import com.frinder.robot.task.BaseRobotTask;
import com.google.common.collect.Queues;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;

import java.util.Queue;

/**
 * @ClassName RobotTask
 * @Description 机器人执行任务
 * @Author frinder
 * @Date 2019/10/18 16:34
 * @Verion 1.0
 */
@Builder
public class RobotTask {
    @Getter
    private String taskId;
    @Setter
    @Getter
    private String robotName;
    @Setter
    @Getter
    private boolean isSend;
    @Getter
    private int priority;
    @Getter
    private Double distance;
    /**
     * 任务列表
     */
    private final Queue<BaseRobotTask> tasks = Queues.newConcurrentLinkedQueue();

    /**
     * 添加任务
     *
     * @param task
     * @return
     */
    public RobotTask add(BaseRobotTask task) {
        tasks.add(task);
        return this;
    }

    /**
     * 是否存在任务
     *
     * @return
     */
    public boolean hasNext() {
        return !tasks.isEmpty();
    }

    /**
     * 获取下一个任务但不删除
     *
     * @return
     */
    public BaseRobotTask peek() {
        return tasks.isEmpty() ? null : tasks.peek();
    }

    /**
     * 获取并删除下一个任务
     *
     * @return
     */
    public BaseRobotTask poll() {
        return tasks.isEmpty() ? null : tasks.poll();
    }
}
